.PHONY : all lex parse clean

##
## to compile to byte code comment the next line
## and uncomment the line after
##
OCAMLC=ocamlopt.opt
#OCAMLC=ocamlc
YACC=menhir 
LEX=ocamllex


##
## output name
##
HTMLOUT=cfg2html
PLUGINOUT=cfgplugin

##
## flags
##
HTMLOCAMLCFLAGS=-o ${HTMLOUT}
PLUGINOCAMLCFLAGS=-o ${PLUGINOUT}
YACCFLAGS=--infer
LEXFLAGS=

##
## source files
## note .mli must preceed .ml of the same name
##
HTMLBASE=cfg2html
PLUGINBASE=cfgplugin
HTMLOCAMLINTERFACES=${HTMLBASE}_parser.mli
PLUGINOCAMLINTERFACES=${PLUGINBASE}_parser.mli
##HTMLOCAMLINTERFACES=
HTMLOCAMLSOURCE=str.cmxa ${HTMLBASE}_parser.ml ${HTMLBASE}_lexer.ml
PLUGINOCAMLSOURCE=str.cmxa ${PLUGINBASE}_parser.ml ${PLUGINBASE}_lexer.ml
HTMLLEXSOURCE=${HTMLBASE}_lexer.mll
PLUGINLEXSOURCE=${PLUGINBASE}_lexer.mll
HTMLYACCSOURCE=${HTMLBASE}_parser.mly
PLUGINYACCSOURCE=${PLUGINBASE}_parser.mly

##
## rules
##
all : html plugin

html : ${HTMLOCAMLSOURCE} ${HTMLOCAMLINTERFACES}	
	${OCAMLC} ${HTMLOCAMLCFLAGS} ${HTMLOCAMLINTERFACES} ${HTMLOCAMLSOURCE}	

plugin : ${PLUGINOCAMLSOURCE} ${PLUGINOCAMLINTERFACES}	
	${OCAMLC} ${PLUGINOCAMLCFLAGS} ${PLUGINOCAMLINTERFACES} ${PLUGINOCAMLSOURCE}	

${HTMLOCAMLSOURCE} : htmllex htmlparse

${PLUGINOCAMLSOURCE} : pluginlex pluginparse

htmllex : parse ${HTMLOCAMLINTERFACES} ${HTMLLEXSOURCE}
	${LEX} ${LEXFLAGS} ${HTMLLEXSOURCE}

pluginlex : parse ${PLUGINOCAMLINTERFACES} ${HTMLLEXSOURCE}
	${LEX} ${LEXFLAGS} ${PLUGINLEXSOURCE}

htmlparse : ${HTMLYACCSOURCE}
	${YACC} ${YACCFLAGS} ${HTMLYACCSOURCE}

pluginparse : ${PLUGINYACCSOURCE}
	${YACC} ${YACCFLAGS} ${PLUGINYACCSOURCE}

clean:
	rm *.cmi *.cmx *.o

clean-all:
	rm ${HTMLOUT} ${PLUGINOUT} *.cmi *.cmx *.o
